from util.g import g
from settings import MultiRecordList


# # # # # TODO 使用装饰器来编写异常处理模块。需要操作 业务流程执行状态表 来修改每家企业对应的材料填写状态。
# # # # # TODO 为避免异常处理模块用时长，所以使 try ... except 下的代码尽量少， 将操作 业务流程执行状态表 的模块封装。
# # # # # TODO 异常处理模块还可能会操作 g 的类属性。当修改了 g 的 continue 相关属性之后，在启动文件中判断，然后将该变量重置，执行下一步操作。



def ExceptionHandle(func):

    def wrapper(*args, **kwargs):

        obj = args[0]
        # print(obj.__class__.__name__, 'in ExceptionHandle -> wrapper')
        class_name = obj.__class__.__name__

        try:
            func(*args)
        except Exception as err:
            # print(err, 'in ExceptionHandle -> wrapper in Exception')
            # TODO 这里需要判断 class_name 是否在 MultiRecordList 中， 如果在 需要处理 id 如果不在 就更新 ent_flow_data 进度表 中的状态值 为 -1
            # TODO 然后在 ent_error_info 中创建一条记录， 将 错误信息记录在 表中
            # TODO 处理 id 需要最后处理完之后 在 ent_records_status 中创建一条记录 记录 录入成功和录入失败的 数据条数 和 id
            if class_name in MultiRecordList:
                g.error_list.append(g.ts_id)
                g.multi_recode_continue = True


        else:
            # TODO 这里需要判断 class_name 是否在 MultiRecordList 中， 如果在 需要处理 id 如果不在 就更新 ent_flow_data 进度表 中的状态值 为 1
            # print('has not Exception', 'in ExceptionHandle -> wrapper in Exception')
            if class_name in MultiRecordList:
                g.completed_list.append(g.ts_id)



    return wrapper
































